package net.betou.cms.action.member;

import static net.betou.cms.Constants.TPLDIR_GUESTBOOK;
import static net.betou.common.page.SimplePage.cpn;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.betou.cms.entity.assist.CmsGuestbook;
import net.betou.cms.entity.main.CmsSite;
import net.betou.cms.entity.main.CmsUser;
import net.betou.cms.entity.main.MemberConfig;
import net.betou.cms.manager.assist.CmsGuestbookMng;
import net.betou.cms.web.CmsUtils;
import net.betou.cms.web.FrontUtils;
import net.betou.cms.web.WebErrors;
import net.betou.common.page.Pagination;
import net.betou.common.web.CookieUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 会员中心获取留言Action
 * @author 忘记一切、重新开始
 *
 */
@Controller
public class GuestbookMemberAct{

	public static final String GUESTBOOK_LIST = "tpl.guestBookLists";
	public static final String GUESTBOOK_DETAIL = "tpl.guestBookDetail";
	public static final String GUESTBOOK_REPLAY = "tpl.guestBookReplay";

	/**
	 * 我的留言
	 * 
	 * 如果没有登录则跳转到登陆页
	 * 
	 * @param request
	 * @param response
	 * @param model
	 * @return
	 */
	@RequestMapping( value = "/member/myguestbook.jspx" )
	public String myguestbook( Integer pageNo, Integer ctgId, HttpServletRequest request, HttpServletResponse response, ModelMap model ) {
		CmsSite site = CmsUtils.getSite( request );
		CmsUser user = CmsUtils.getUser( request );
		FrontUtils.frontData( request, model, site );
		MemberConfig mcfg = site.getConfig( ).getMemberConfig( );
		// 没有开启会员功能
		if( !mcfg.isMemberOn( ) ){
			return FrontUtils.showMessage( request, model, "member.memberClose" );
		}
		if( user == null ){
			return FrontUtils.showLogin( request, model, site );
		}
		Pagination pagination = guestbookMng.getPage( site.getId( ), ctgId, user.getId( ), null, null, true, false, cpn( pageNo ), CookieUtils.getPageSize( request ) );
		model.addAttribute( "pagination", pagination );
		return FrontUtils.getTplPath( request, site.getSolutionPath( ), TPLDIR_GUESTBOOK, GUESTBOOK_LIST );
	}

	/**
	 * 留言详细
	 * 
	 */
	@RequestMapping( value = "/member/guestbook_detail.jspx" )
	public String guestbook_detail( Integer id, HttpServletRequest request, HttpServletResponse response, ModelMap model ) {
		CmsSite site = CmsUtils.getSite( request );
		CmsUser user = CmsUtils.getUser( request );
		FrontUtils.frontData( request, model, site );
		MemberConfig mcfg = site.getConfig( ).getMemberConfig( );
		// 没有开启会员功能
		if( !mcfg.isMemberOn( ) ){
			return FrontUtils.showMessage( request, model, "member.memberClose" );
		}
		if( user == null ){
			return FrontUtils.showLogin( request, model, site );
		}
		CmsGuestbook guestbook = guestbookMng.findById( id );
		model.addAttribute( "guestbook", guestbook );
		return FrontUtils.getTplPath( request, site.getSolutionPath( ), TPLDIR_GUESTBOOK, GUESTBOOK_DETAIL );
	}

	/**
	 * 查看留言回复
	 */
	@RequestMapping( value = "/member/guestbook_replay.jspx" )
	public String guestbook_replay( Integer id, String nextUrl, HttpServletRequest request, HttpServletResponse response, ModelMap model ) {
		CmsSite site = CmsUtils.getSite( request );
		CmsUser user = CmsUtils.getUser( request );
		FrontUtils.frontData( request, model, site );
		MemberConfig mcfg = site.getConfig( ).getMemberConfig( );
		// 没有开启会员功能
		if( !mcfg.isMemberOn( ) ){
			return FrontUtils.showMessage( request, model, "member.memberClose" );
		}
		if( user == null ){
			return FrontUtils.showLogin( request, model, site );
		}
		CmsGuestbook guestbook = guestbookMng.findById( id );
		if( !guestbook.getMember( ).equals( user ) ){
			WebErrors errors = WebErrors.create( request );
			errors.addErrorCode( "error.noPermissionsView" );
			return FrontUtils.showError( request, response, model, errors );
		}
		model.addAttribute( "guestbook", guestbook );
		return FrontUtils.getTplPath( request, site.getSolutionPath( ), TPLDIR_GUESTBOOK, GUESTBOOK_REPLAY );
	}

	@Autowired
	private CmsGuestbookMng guestbookMng;

}
